<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 8 Configuration Reference (8.0.39) - The Cluster Membership object</title><meta name="author" content="Filip Hanik"><script type="application/javascript" data-comments-identifier="tomcat-8.0-doc/config/cluster-membership">
    "use strict"; // Enable strict mode

    (function() {
      var thisScript = document.currentScript;
      if (!thisScript) { // Workaround for IE <= 11
        var scripts = document.getElementsByTagName("script");
        thisScript = scripts[scripts.length - 1];
      }
      document.addEventListener("DOMContentLoaded", (function() {
        var commentsDiv = document.getElementById("comments_thread");
        var commentsShortname = "tomcat";
        var commentsIdentifier = "http://tomcat.apache.org/" +
          thisScript.getAttribute("data-comments-identifier") + ".html";

        (function(w, d) {
          if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
            var s = d.createElement("script");
            s.type = "application/javascript";
            s.async = true;
            s.src = "https://comments.apache.org/show_comments.lua?site=" +
              encodeURIComponent(commentsShortname) +
              "&page=" + encodeURIComponent(commentsIdentifier);
            d.head.appendChild(s);
          } else {
            commentsDiv.appendChild(d.createTextNode("Comments are disabled for this page at the moment."));
          }
        })(window, document);
      }), false);
    })();
  </script></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="http://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="http://www.apache.org/" target="_blank"><img src="../images/asf-feather.png" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 8 Configuration Reference</h1><div class="versionInfo">
          Version 8.0.39,
          <time datetime="2016-11-09">Nov 9 2016</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Top Level Elements</h2><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul></div><div><h2>Executors</h2><ul><li><a href="executor.html">Executor</a></li></ul></div><div><h2>Connectors</h2><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul></div><div><h2>Containers</h2><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul></div><div><h2>Nested Components</h2><ul><li><a href="cookie-processor.html">CookieProcessor</a></li><li><a href="credentialhandler.html">CredentialHandler</a></li><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="jar-scan-filter.html">JarScanFilter</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul></div><div><h2>Cluster Elements</h2><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul></div><div><h2>web.xml</h2><ul><li><a href="filter.html">Filter</a></li></ul></div><div><h2>Other</h2><ul><li><a href="systemprops.html">System properties</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>The Cluster Membership object</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Default_Implementation">Default Implementation</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Multicast_Attributes">Multicast Attributes</a></li></ol></li></ul>
</div><h3 id="Introduction">Introduction</h3><div class="text">
  <p>
    The membership component in the Apache Tribes <a href="cluster-channel.html">Channel</a> is responsible
    for dynamic discovery of other members(nodes) in the cluster.
  </p>
</div><h3 id="Default_Implementation">Default Implementation</h3><div class="text">
  <p>
    The default implementation of the cluster group notification is built on top of multicast heartbeats
    sent using UDP packets to a multicast IP address.
    Cluster members are grouped together by using the same multicast address/port combination.
    Each member sends out a heartbeat with a given interval (<code>frequency</code>), and this
    heartbeat is used for dynamic discovery.
    In a similar fashion, if a heartbeat has not been received in a timeframe specified by <code>dropTime</code>
    ms. a member is considered suspect and the channel and any membership listener will be notified.
  </p>
</div><h3 id="Attributes">Attributes</h3><div class="text">

  <div class="subsection"><h4 id="Multicast_Attributes">Multicast Attributes</h4><div class="text">

  <table class="defaultTable"><tr><th style="width: 15%;">
          Attribute
        </th><th style="width: 85%;">
          Description
        </th></tr><tr><td><strong><code class="attributeName">className</code></strong></td><td>
      <p>
      The default value is <code>org.apache.catalina.tribes.membership.McastService</code>
      and is currently the only implementation.
      This implementation uses multicast heartbeats for member discovery.
      </p>
    </td></tr><tr><td><code class="attributeName">address</code></td><td>
      <p>
      The multicast address that the membership will broadcast its presence and listen
      for other heartbeats on. The default value is <code>228.0.0.4</code>
      Make sure your network is enabled for multicast traffic.<br>
      The multicast address, in conjunction with the <code>port</code> is what
      creates a cluster group. To divide up your farm into several different group, or to
      split up QA from production, change the <code>port</code> or the <code>address</code>
      <br>Previously known as mcastAddr.
      </p>
    </td></tr><tr><td><code class="attributeName">port</code></td><td>
      <p>
      The multicast port, the default value is <code>45564</code><br>
      The multicast port, in conjunction with the <code>address</code> is what
      creates a cluster group. To divide up your farm into several different group, or to
      split up QA from production, change the <code>port</code> or the <code>address</code>
      </p>
    </td></tr><tr><td><code class="attributeName">frequency</code></td><td>
      <p>
      The frequency in milliseconds in which heartbeats are sent out. The default value is <code>500</code> ms.<br>
      In most cases the default value is sufficient. Changing this value, simply changes the interval in between heartbeats.
      </p>
    </td></tr><tr><td><code class="attributeName">dropTime</code></td><td>
      <p>
      The membership component will time out members and notify the Channel if a member fails to send a heartbeat within
      a give time. The default value is <code>3000</code> ms. This means, that if a heartbeat is not received from a
      member in that timeframe, the membership component will notify the cluster of this.<br>
      On a high latency network you may wish to increase this value, to protect against false positives.<br>
      Apache Tribes also provides a <a href="cluster-interceptor.html#org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes"><code>TcpFailureDetector</code></a> that will
      verify a timeout using a TCP connection when a heartbeat timeout has occurred. This protects against false positives.
      </p>
    </td></tr><tr><td><code class="attributeName">bind</code></td><td>
      <p>
      Use this attribute if you wish to bind your multicast traffic to a specific network interface.
      By default, or when this attribute is unset, it tries to bind to <code>0.0.0.0</code> and sometimes on multihomed hosts
      this becomes a problem.
      </p>
    </td></tr><tr><td><code class="attributeName">ttl</code></td><td>
      <p>
      The time-to-live setting for the multicast heartbeats.
      This setting should be a value between 0 and 255. The default value is VM implementation specific.
      </p>
    </td></tr><tr><td><code class="attributeName">domain</code></td><td>
      <p>
      Apache Tribes has the ability to logically group members into domains, by using this domain attribute.
      The <code>org.apache.catalina.tribes.Member.getDomain()</code> method returns the value specified here.
      </p>
    </td></tr><tr><td><code class="attributeName">soTimeout</code></td><td>
      <p>
      The sending and receiving of heartbeats is done on a single thread, hence to avoid blocking this thread forever,
      you can control the <code>SO_TIMEOUT</code> value on this socket.<br>
      If a value smaller or equal to 0 is presented, the code will default this value to frequency
      </p>
    </td></tr><tr><td><code class="attributeName">recoveryEnabled</code></td><td>
      <p>
      In case of a network failure, Java multicast socket don't transparently fail over, instead the socket will continuously
      throw IOException upon each receive request. When recoveryEnabled is set to true, this will close the multicast socket
      and open a new socket with the same properties as defined above.<br>
      The default is <code>true</code>. <br>
      </p>
    </td></tr><tr><td><code class="attributeName">recoveryCounter</code></td><td>
      <p>
      When <code>recoveryEnabled==true</code> this value indicates how many
      times an error has to occur before recovery is attempted. The default is
      <code>10</code>. <br>
      </p>
    </td></tr><tr><td><code class="attributeName">recoverySleepTime</code></td><td>
      <p>
      When <code>recoveryEnabled==true</code> this value indicates how long time (in milliseconds)
      the system will sleep in between recovery attempts, until it recovers successfully.
      The default is <code>5000</code> (5 seconds). <br>
      </p>
    </td></tr><tr><td><code class="attributeName">localLoopbackDisabled</code></td><td>
      <p>
      Membership uses multicast, it will call <code>java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled)</code>.
      When <code>localLoopbackDisabled==true</code> multicast messages will not reach other nodes on the same local machine.
      The default is <code>false</code>. <br>
      </p>
    </td></tr></table>


  </div></div>


</div><div class="noprint"><h3 id="comments_section">
                  Comments
                </h3><div class="text"><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
                    on improving documentation for Apache Tomcat.<br><br>
                    If you have trouble and need help, read
                    <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
                    and ask your question on the tomcat-users
                    <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
                    Do not ask such questions here. This is not a Q&amp;A section.<br><br>
                    The Apache Comments System is explained <a href="../comments.html">here</a>.
                    Comments may be removed by our moderators if they are either
                    implemented or considered invalid/off-topic.
                  </p><div id="comments_thread"></div></div></div></div></div></div></div><footer><div id="footer">
    Copyright &copy; 1999-2016, The Apache Software Foundation
  </div></footer></div></body></html>